package org.jeecg.modules.hc.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.modules.hc.enums.*;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @Description: 商户
 * @Author: jeecg-boot
 * @Date: 2022-12-13
 * @Version: V1.0
 */
@Data
@TableName("hc_merchant")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "hc_merchant对象", description = "商户")
public class HcMerchant implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableField(exist = false)
    @ApiModelProperty(value = "收入总额")
    private java.math.BigDecimal totalIncome;

    @TableField(exist = false)
    @ApiModelProperty(value = "勾选的id")
    private String selections;

    @TableField(exist = false)
    @ApiModelProperty(value = "门店销量")
    private Long storeSales;

    @TableField(exist = false)
    @ApiModelProperty(value = "全局页面列表的日期")
    private String globalPageDate;

    @TableField(exist = false)
    @ApiModelProperty(value = "统计订单开始时间")
    private String orderStatisticsTimeBegin;

    @TableField(exist = false)
    @ApiModelProperty(value = "统计订单结束时间")
    private String orderStatisticsTimeEnd;

    @TableField(exist = false)
    @ApiModelProperty(value = "商户公告")
    private String merchantAnnouncement;

    @TableField(exist = false)
    @ApiModelProperty(value = "未导出数量")
    private Long notExportedCount;

    @TableField(exist = false)
    @ApiModelProperty(value = "菜品单量列表")
    private List<HcOrderDetailed> hcOrderDetailedList;

    @TableField(exist = false)
    @ApiModelProperty(value = "token")
    private String token;

    @TableField(exist = false)
    @ApiModelProperty(value = "地址ID")
    private java.lang.String addressId;

    @TableField(exist = false)
    @ApiModelProperty(value = "商户ID集合")
    private List<String> ids;

    @TableField(exist = false)
    @ApiModelProperty(value = "商品列表")
    private List<HcCommodity> hcCommodityList;

    @TableField(exist = false)
    @ApiModelProperty(value = "购物车列表")
    private List<HcShoppingCart> hcShoppingCartList;

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "id")
    private java.lang.String id;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private java.lang.String createBy;
    /**
     * 创建日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建日期")
    private java.util.Date createTime;
    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private java.lang.String updateBy;
    /**
     * 更新日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "更新日期")
    private java.util.Date updateTime;
    /**
     * 门店LOGO
     */
    @Excel(name = "门店LOGO", width = 15)
    @ApiModelProperty(value = "门店LOGO")
    private java.lang.String logo;
    /**
     * 门店描述
     */
    @Excel(name = "门店描述", width = 15)
    @ApiModelProperty(value = "门店描述")
    private java.lang.String storeDescription;
    /**
     * 门店名称
     */
    @Excel(name = "门店名称", width = 15)
    @ApiModelProperty(value = "门店名称")
    private java.lang.String storeName;
    /**
     * 门店菜品合作单价
     */
    @Excel(name = "门店菜品合作单价", width = 15)
    @ApiModelProperty(value = "门店菜品合作单价")
    private java.lang.String storeUnitPrice;
    /**
     * 开启自定义价格
     */
    @Excel(name = "开启自定义价格", width = 15)
    @ApiModelProperty(value = "开启自定义价格")
    private HcIsFlagEnum customPriceFlag;
    /**
     * 门店上午开始营业时间
     */
    @Excel(name = "门店上午开始营业时间", width = 15)
    @ApiModelProperty(value = "门店上午开始营业时间")
    private java.lang.String businessHoursBegin;
    /**
     * 门店上午结束营业时间
     */
    @Excel(name = "门店上午结束营业时间", width = 15)
    @ApiModelProperty(value = "门店上午结束营业时间")
    private java.lang.String businessHoursEnd;
    /**
     * 门店下午开始营业时间
     */
    @Excel(name = "门店下午开始营业时间", width = 15)
    @ApiModelProperty(value = "门店下午开始营业时间")
    private java.lang.String afternoonHoursBegin;
    /**
     * 门店下午结束营业时间
     */
    @Excel(name = "门店下午结束营业时间", width = 15)
    @ApiModelProperty(value = "门店下午结束营业时间")
    private java.lang.String afternoonHoursEnd;
    /**
     * 门店资质
     */
    @Excel(name = "门店资质", width = 15)
    @ApiModelProperty(value = "门店资质")
    private java.lang.String qualifications;
    /**
     * 门店登录账号
     */
    @Excel(name = "门店登录账号", width = 15)
    @ApiModelProperty(value = "门店登录账号")
    private java.lang.String loginAccount;
    /**
     * 门店状态
     */
    @Excel(name = "门店状态", width = 15)
    @ApiModelProperty(value = "门店状态")
    private HcStoreStatusEnum storeStatus;
    /**
     * 配送状态
     */
    @Excel(name = "配送状态", width = 15)
    @ApiModelProperty(value = "配送状态")
    private HcDeliveryStatusEnum deliveryStatus;
    /**
     * 包装评分
     */
    @Excel(name = "包装评分", width = 15)
    @ApiModelProperty(value = "包装评分")
    private java.math.BigDecimal packagingScore;
    /**
     * 分量评分
     */
    @Excel(name = "分量评分", width = 15)
    @ApiModelProperty(value = "分量评分")
    private java.math.BigDecimal componentScore;
    /**
     * 口味评分
     */
    @Excel(name = "口味评分", width = 15)
    @ApiModelProperty(value = "口味评分")
    private java.math.BigDecimal flavorScore;
    /**
     * 排序
     */
    @Excel(name = "排序", width = 15)
    @ApiModelProperty(value = "排序")
    private java.lang.Integer sort;
    /**
     * 启用/禁用状态
     */
    @Excel(name = "启用/禁用状态", width = 15)
    @ApiModelProperty(value = "启用/禁用状态")
    private java.lang.Integer enableFlag;
    /**
     * 状态
     */
    @Excel(name = "状态", width = 15)
    @ApiModelProperty(value = "状态")
    private HcUpFlagEnum state;

    @TableField(exist = false)
    @ApiModelProperty(value = "主营品类ID")
    private java.lang.String mainCategoriesId;

    @TableField(exist = false)
    @ApiModelProperty(value = "站点ID")
    private java.lang.String siteId;

    @TableField(exist = false)
    @ApiModelProperty(value = "站点对象")
    private List<HcSiteRelation> hcSiteRelationList;

    @TableField(exist = false)
    @ApiModelProperty(value = "站点名称")
    private java.lang.String siteName;

    @ApiModelProperty(value = "营业状态")
    private HcBusinessStateEnum businessState;

    @ApiModelProperty(value = "营业时间")
    private String businessHours;

    @ApiModelProperty(value = "密码")
    private String pass;

    @ApiModelProperty(value = "openId")
    private String openId;

    @ApiModelProperty(value = "周三是否自动结算")
    private Boolean autoSettle;

    @TableLogic
    private Integer delFlag;

    @TableField(exist = false)
    private List<HcCompanyFoodList> foodLists;
    @TableField(exist = false)
    private List<Map<String,Object>> companyOrderDaos;
    @TableField(exist = false)
    @ApiModelProperty(value = "取餐序号")
    private Integer pickingSerialNo;
    @ApiModelProperty(value = "取餐地址")
    @TableField(exist = false)
    private String pickupAddress;
    @ApiModelProperty(value = "取餐地址代号")
    @TableField(exist = false)
    private String addressCode;
    @ApiModelProperty(value = "订单编号")
    @TableField(exist = false)
    private String orderNum;
    @ApiModelProperty(value = "企业订单状态")
    @TableField(exist = false)
    private String orderState;
    @ApiModelProperty(value = "企业售后订单状态")
    @TableField(exist = false)
    private HcAfterSalesStateEnum companyOrderAfterSalesState;
    @ApiModelProperty(value = "企业售后订单id")
    @TableField(exist = false)
    private String companyOrderAfterSalesId;

    /**是否隐藏满额商品*/
    @ApiModelProperty(value = "是否隐藏满额商品")
    @TableField(exist = false)
    private java.lang.String isHideFullPriceProd;
    /**统一售价*/
    @ApiModelProperty(value = "统一售价")
    @TableField(exist = false)
    private java.math.BigDecimal salePrice;
    /**门店合作价格*/
    @ApiModelProperty(value = "门店合作价格")
    @TableField(exist = false)
    private java.math.BigDecimal merchantCooperatePrice;

    @TableField(exist = false)
    @JsonProperty(value = "isDiscountEnable")
    private boolean discountEnabled;

    /**
     * 用户查询时的时间点，是否在显示优惠时间段内，如果是则享受限时优惠值为true，否则为 false
     * 由于 lombok无法对 is开头的字段生成 getter/setter，因此，POJO 定义时字段命名为 commodityDiscountted，
     * 使用@JsonProperty注解，在将POJO对象转换成json字符串返回给前端时，字段名使用接口文档中定义的 isDiscountCommodity
     */
    @TableField(exist = false)
    @JsonProperty(value = "isDiscountCommodity")
    private boolean commodityDiscountted;

    /**
     * 折扣开始时间
     */
    @TableField(exist = false)
    private String discountStartTime;

    /**
     * 折扣结束时间
     */
    @TableField(exist = false)
    private String discountEndTime;

    /**
     * 折扣剩余时间，格式为 hh:mm:ss
     */
    @TableField(exist = false)
    private String discountRemainingTime;


    /**门店销量*/
    @ApiModelProperty(value = "门店销量")
    @TableField(exist = false)
    private Long merchantSaleCount;
}
